In the art, there exists systems and compilers that provide a semi-automated “solution” to “re-write” a portion(s) of the program to optimize its performance.
While one existing complier system provides an auto tuning system that detects an optimizable part of the target program based on the performance data and the static analysis of the program, it does not handle multiple optimizations overlapping one another in the target program, because it extracts the optimizable part as a subroutine in a dynamically loadable library, and optimizes the subroutine.
Current program optimization solutions for high performance applications do not detect multiple performance bottlenecks and do not apply the corresponding solutions in a single run of this system. In the case of multiple solutions found, their application regions may collide, and there may also be dependency between solutions for several bottlenecks. However simple exclusion of colliding solutions and dependent solutions decreases the number of solutions applied in one run of the system.
That is, current program optimization systems do not provide a necessary and sufficient collision detection mechanism among re-write solutions.
Further, current systems do not indicate specific locations to apply multiple solutions.
Further, the current systems do not apply multiple rewritings in a single solution.